package com.mjf.tankgame.v4;

import java.util.Vector;

/**
 * 坦克父类
 */
public class Tank {
    private int x;  // 坦克的横坐标
    private int y;  // 坦克的纵坐标
    private int direct = 0; // 坦克方向 0 上1 右 2下 3左
    private int speed = 3;
    boolean isLive = true;

    // 在敌人坦克类，使用 Vector 保存多个Shot
    Vector<Shot> shots = new Vector<>();

    // 定义一个Shot对象, 表示一个射击(线程)
    Shot shot = null;

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }

    // 坦克射击
    public Shot shot() {
        // 创建 Shot 对象, 根据当前对象的位置和方向来创建Shot
        switch (getDirect()) { // 得到方向
            case 0: // 向上
                shot = new Shot(getX() + 20, getY(), 0);
                break;
            case 1: // 向右
                shot = new Shot(getX() + 60, getY() + 20, 1);
                break;
            case 2: // 向下
                shot = new Shot(getX() + 20, getY() + 60, 2);
                break;
            case 3: // 向左
                shot = new Shot(getX(), getY() + 20, 3);
                break;
        }

        return shot;

    }

    // 上 右 下 左 移动方法
    public void moveUp() {
        if (y - speed >= 0) {
            y -= speed;
        }
    }

    public void moveRight(int panelWidth) {
        if (x + 60 + speed <= panelWidth) {
            x += speed;
        }
    }

    public void moveDown(int panelHeight) {
        if (y + 60 + speed <= panelHeight) {
            y += speed;
        }
    }

    public void moveLeft() {
        if (x - speed >= 0) {
            x -= speed;
        }
    }

    public int getDirect() {
        return direct;
    }

    public void setDirect(int direct) {
        this.direct = direct;
    }

    public Tank(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}
